1. Field of the Invention
The present invention relates to computer systems with peripheral devices such as printers and video displays. More particularly, the invention concerns an apparatus, article of manufacture, or method in which a controller initiates exchange of a message having a compressed format by transmitting an OBS enable code along with a basic command. Transmitting the basic command without the OBS enable code, however, initiates the exchange of messages having a predefined uncompressed format.
2. Description the Related Art
Many modern computer systems include a central processing unit ("CPU") with a number of peripheral devices. This is often a cost effective approach, because multiple peripheral devices can share one expensive, powerful CPU. Another advantage of these systems is that peripheral devices may be remotely located from the CPU. The peripheral devices are typically coupled to a communications port of the CPU by connecting cable, which may be tens, hundreds, or even thousands of feet long.
Each of the CPU's ports may be used by one peripheral device alone, or shared by multiple devices. With a "point-to-point" arrangement, a port is used by one device. With a "cable-thru" configuration (also called "multi-drop"), a port may be shared by multiple devices; the port is coupled to one peripheral device, which is connected to one or more other devices in daisy chain fashion. An exemplary protocol for communications between a CPU and distributed peripheral devices is the IBM 5250 Twinaxial protocol (called "Twinax").
FIG. 1 depicts one example of the format used in a conventional Twinax message. The message 100 begins with a start code 102, continuing with one or more sixteen bit data or command frames 104. The start code 102 is a unique binary pattern that signals the beginning of the message 100. Successive frames are shown by F1, F2, F3, and so on. The last frame 106 may contain an error checking code, a stop code, etc.
FIG. 2 illustrates an individual sixteen-bit frame of the message 100. The frame 200 includes a one-bit start bit 210, an eight-bit data/command field 208, a three-bit station address 206, a one-bit parity field 204, and three-bit zero-fill field 202. The zero fill field 202 is typically unused, being filled with three zeros. The parity field 204 is filled with an appropriate bit that, when considered with the contents of the data/command field 208, yields a predetermined parity, such as even parity. The station address 206 identifies the one peripheral device that the frame 200 is directed to, since other peripheral devices may also be attached to the CPU port and thus receive the frame 200. The data/command field 208 contains data or a command. The start bit 210 signals the start of the current frame 200.
Known distributed-peripheral arrangements and their communications formats, such as Twinax, are completely satisfactory for many applications. However, competition in the industry spurs engineers to constantly seek improvements to these systems. Communication speed is one design feature that is important to engineers and customers alike. Faster communications between a CPU and its peripheral devices leave more time for the CPU and its peripheral devices to complete their respective jobs. Faster communications also means that the customer does not have to wait as long for data or images to be transferred between the CPU and peripheral device.
Usually, however, the communications port and its attached peripheral devices are built to communicate at one pre-established, fixed rate. One exemplary Twinax protocol, for example, involves communications at one million bits per second (i.e., 1 Mbps). Thus, improvements in communications speed are only possible by upgrading the communications port and the peripheral devices. Cost frequently prevents some users from upgrading components. These users are therefore stuck with the communications rate supported by their ports and other equipment.
Therefore, the desire to increase the communications speeds with minimal upgrading of components has driven engineers to develop new ways of using existing communications equipment, thereby saving costs. One innovative approach, developed by International Business Machines Corp. ("IBM"), involves use of an optimized bit stream ("OBS"). The OBS approach may be implemented in systems using Twinax, for example.
FIG. 3 depicts the format of an exemplary OBS message 300. Like the conventional (non-OBS) message 100, the message 300 begins with a start code 302. The start code 302 is followed by two sixteen bit data/command frames 304-305. The remaining data/command frames 308, which represent OBS data, only have eight bits each. As shown below, these eight-bit frames permit the OBS data to be sent in a compressed format. The message 300 ends with two eight-bit cyclical redundancy check ("CRC") frames 310-311 to assure data integrity.
FIG. 4 shows the format of an individual OBS frame 400. The frame 400 simply includes eight command or data bits. Thus, in comparison to the conventional (non-OBS) frame 200, the frame 400 omits the zero fill field 202, parity field 204, station address 206, and start bit 210. As a result of this reduced frame size, the overall OBS message 300 is considerably shorter than the non-OBS message 100 containing the same data and/or commands. Without changing the data transmission rate, the OBS message 300 is therefore transmitted more quickly than the non-OBS message 100.
FIG. 5 shows a conventional OBS write sequence 500, sent by a controller to initiate writing of data to a peripheral device. This sequence 500 is made up of multiple different subcomponents. More particularly, a first part of the message sequence includes a load address command 502 and a specialized optimized write command 506. The load address command 502 specifies the address in the peripheral device to store the write data. The OBS write command 506 contains a specialized OBS command instructing the peripheral device to prepare to receive OBS data. The command 506 is specialized because it is different than its non-OBS counterpart. The OBS write command 506 also includes a byte count, signifying the number of bytes of write data. The commands 502 and 506 are transmitted together using standard sixteen-bit frames, as shown in FIG. 1.
After issuing the OBS write command 506, the controller polls the peripheral device (task 508) until the peripheral device issues a "ready" message. Then, the controller sends another message containing a "write activate" command 510, which actually commences the write operation, in OBS mode. The write activate command 510 is issued in OBS format, as shown in FIG. 3. Data exchanged as a result of the write activate command 510 also utilizes the OBS format, namely eight-bit frames 308, as shown in FIG. 3. A read operation is similar to a write operation, with data being transferred instead from the peripheral device to the CPU.
The conventional OBS approach completely satisfies the needs of many different applications. One particular advantage is that this approach allows both OBS and non-OBS devices to coexist on the same CPU port. Nonetheless, as mentioned previously, industry competition spurs engineers to constantly improve modern computer systems. Some targeted areas of improvement include features such as the cost, efficiency, design simplicity, and inter-device communication speed of these computer systems, and the ability to maintain existing cable configurations.